//=======================================Copyright(c)===========================================
// 								  深圳易马达科技有限公司
//---------------------------------------文件信息----------------------------------------------
//文件名   	: SafeBuf.h
//创建人  	: 
//创建日期	:
//描述	    : Sim模组串口读写缓存头文件
//-----------------------------------------------当前版本修订----------------------------------
//修改人   	:
//版本	    :
//修改日期	:
//描述	    : 
//=============================================================================================
#ifndef __SAFE_BUF__H_
#define __SAFE_BUF__H_

#ifdef __cplusplus
extern "C"{
#endif

//=============================================================================================
//包含头文件
//=============================================================================================
#include "BSPTypeDef.h"

//=============================================================================================
//定义数据类型
//=============================================================================================
//读写buff定义结构体
typedef struct _SafeBuf
{
	volatile u16 m_WriteInd;
	volatile u16 m_ReadIndx;
	
	u16 m_MaxSize;
	u8*  m_pBuf;
}SafeBuf;

//=============================================================================================
//声明接口函数
//=============================================================================================

//buff读写索引复位
void SafeBuf_Reset(SafeBuf* pSafeBuf);

//buff初始化
void SafeBuf_Init(SafeBuf* pSafeBuf, void* pBuf, u16 bufSize);

//写入1字节到buff中
int SafeBuf_WriteByte(SafeBuf* pSafeBuf, u8 data);

//写入多个字节到buff中
int SafeBuf_Write(SafeBuf* pSafeBuf, const void* pData, u16 len);

//Pop one or more bytes from SafeBuf
//从buff中读取1个或多个字节
int SafeBuf_Read(SafeBuf* pSafeBuf, void* pBuf, int bufSize);

//获取buff中剩余的未处理字节
int SafeBuf_GetCount(SafeBuf* pSafeBuf);

#ifdef __cplusplus
}
#endif

#endif

/*****************************************end of SafeBuf.h*****************************************/
